Enterprises that use virtual machines (VMs) such as virtual desktops for their employees may have many virtual machines (e.g., on the order of 100,000 virtual machines) stored in disk images on shared network storage. To manage storage usage, each user can be assigned a storage quota specifying a total amount of storage space that the user is permitted to use for his VMs. The sum of storage space allotted to all of the user's VMs may not exceed the user's storage quota. The storage quota enables an administrator to know how much of a certain high level resource is consumed, and further enables the administrator to limit the amount of high level resources that individual users can use.
The shared network storage on which disk images are stored may be spread across multiple storage targets (e.g., multiple storage devices, multiple storage clusters, etc.). Additionally, different VMs may be hosted by different host machines, which may or may not be part of a machine cluster. Therefore, a user who has multiple VMs may have VMs that are hosted by different host machines and stored in different storage targets. The user's quota applies to all of the user's virtual machines. Therefore, in conventional systems, the different storage targets and different host machines must be synchronized to ensure that the user does not exceed his storage quota. However, such synchronization consumes network resources and host machine resources, and is typically time consuming to implement and quite complex. Additionally, such synchronization presents difficulties for scalability.